home *** CD-ROM | disk | FTP | other *** search
-
- {
- Wicked Sounds for Windows
- A Wave Database and Event Handler for Windows
- by
- Axel Stolz and Thorsten Petrowski
- Copyright 1992 Abacus | Data Becker GmbH
-
- Internationalized version 1.0 TP 10/92
-
- American version 1.0 12/92
- }
-
- program WickedSoundsForWindows;
-
- uses DataObj,Strings, WinTypes, WinProcs, WObjects, WinDOS, Win31, ShellAPI,
- MMSystem, CommDlg, BWCC,PlayDLG,RecDLG,ScanDLG,TakeDLG,BrwsDLG,PPlayDLG,
- AboutDlg, WaveUtil, DiskDlg, SaveDlg, EventDlg, ScrnsDlg;
-
- {!!!}
- {$M 16384, 8192}
- {$I-,S-}
- {$R TAPE}
- {$R WswHook}
-
- { Resource IDs }
- CONST
- DN_DeckDlg = 'TWaveDeckDlg';
- ID_RECORD = 300;
- ID_REWIND = 301;
- ID_PLAY = 302;
- ID_PROGPLAY= 303;
- ID_CUE = 304;
- ID_STOP = 305;
- ID_POWER = 310;
- ID_SWITCH = 311;
- ID_MESS = 312;
- ID_TRACK = 313;
- ID_NAME = 314;
- ID_Browse = 315;
- ID_About = 316;
- ID_Single = 320;
- ID_Prog = 321;
- ID_Database= 322;
- ID_FirstOne= 323;
- ID_Last = 324;
- ID_Repeat = 327;
- ID_Pause = 325;
- ID_Events = 329;
- ID_ScrnSve = 330;
-
- const
- DeviceID : Word = 0;
- SinglePlay = 0; { Represents single file play }
- PListPlay = 1; { Represents playlist play }
- DataPlay = 2; { Represents database play }
-
- Var IsRunning : Boolean;
- Paused : Boolean;
- TimerGoing : Boolean;
- WaveRatio : Integer;
- WaveLength : Longint;
-
- Type
- TFilename = array[0..255] of Char;
-
- type
- PMCI_Open_Parms = ^TMCI_Open_Parms;
- TMCI_Open_Parms = record
- dwCallback: Longint;
- wDeviceID: Word;
- wReserved0: Word;
- lpstrDeviceType: PChar;
- lpstrElementName: PChar;
- lpstrAlias: PChar;
- end;
-
- type
- PMCI_Load_Parms = ^TMCI_Load_Parms;
- TMCI_Load_Parms = record
- dwCallback: Longint;
- lpfilename: PChar;
- end;
-
- TYPE
- PWaveDeckDlg = ^TWaveDeckDlg;
- TWaveDeckDlg = object(TDlgWindow)
- FileName: ARRAY[0..fsPathName] OF Char;
- PlayMode : Integer;
- Playing,isdd,Virgin,Rep,FirstOne,LastOne : BOOL;
- ActTrack,ddcount,ddmax : Integer;
- ddhandle : THandle;
- RepeatOne : BOOL;
- WDummyRec : WAVEDataType;
- MciOpenParm : TMCI_Open_Parms;
- MciGenParm : TMCI_Generic_Parms;
- MciPlayParm : TMCI_Play_Parms;
- MciStatusParm: TMCI_Status_Parms;
- MciSetParm : TMCI_Set_Parms;
- AppIcon : HIcon;
- PowerCheck : PCheckBox;
- constructor Init (AParent: PWindowsObject; ATitle: PChar);
- procedure SetupWindow; virtual;
- Procedure HandleProgSwitch;
- Procedure HandleRepeat (Var Msg: TMessage); virtual ID_First + ID_Repeat;
- Procedure HandleFirst (Var Msg: TMessage);virtual ID_First + ID_FirstOne;
- Procedure HandleLast (Var Msg:TMEssage);virtual ID_First + ID_Last;
- PROCEDURE HandlePlay(VAR Msg : TMessage);virtual ID_First + ID_Play;
- PROCEDURE HandleStop(Var Msg : TMessage);virtual ID_First + ID_Stop;
- PROCEDURE HandleRecord(VAr Msg: TMessage);virtual ID_First + ID_Record;
- PROCEDURE HandleSearch(VAr Msg: TMessage);virtual ID_First + ID_Progplay;
- PROCEDURE HandlePower (Var Msg: TMessage); virtual ID_First + ID_Power;
- PROCEDURE HandleCue (Var Msg: TMessage); virtual ID_First + ID_Cue;
- PROCEDURE HandleRewind (Var Msg: TMessage);virtual ID_First + ID_Rewind;
- PROCEDURE HandleBrowse (Var Msg: TMessage);virtual ID_First + ID_Browse;
- Procedure HandleSingle (Var Msg: TMessage);virtual ID_First + ID_Single;
- Procedure HandleProg (Var Msg: TMessage);virtual ID_First + ID_Prog;
- Procedure HandleData (Var Msg: TMessage);virtual ID_First + ID_DataBase;
- PROCEDURE DisplayData (Data : WaveDataType);
- procedure StopWave; virtual;
- procedure GetWindowClass(var AWndClass: TWndClass); virtual;
- function GetClassName: PChar; virtual;
- procedure MciNotify(var Msg: TMessage);
- virtual wm_First + mm_MCINotify;
- procedure SoundPlay(ElementName: PChar);
- procedure PlayStuff (ElementName:PCHar);
- procedure SoundPause (Var Msg:TMessage); virtual id_first + id_pause;
- procedure GetDeviceInfo;
- procedure Play;
- procedure WMDropFiles(var Msg: TMessage); virtual wm_first + wm_dropfiles;
- Procedure DropNext;
- Procedure HandleAbout (Var Msg : TMessage);virtual id_First + id_About;
- Procedure HandleEvents (Var Msg : TMessage);virtual id_First + id_Events;
- Procedure HandleScrnSve (Var Msg : TMessage);virtual id_First + id_ScrnSve;
- Procedure CloseSound;
- procedure WMQueryDragIcon(var Msg: TMessage);
- virtual wm_First + wm_QueryDragIcon;
- end;
-
- { TWaveDeck is Main Object }
-
- TWaveDeckApp = object(TApplication)
- procedure InitMainWindow; virtual;
- Destructor Done;virtual;
- end;
-
- procedure TWaveDeckDlg.WMDropFiles(var Msg: TMessage);
- Var DropPt : TPoint;
- begin
- ddhandle := Msg.WParam;
- DragQueryPoint(ddhandle, DropPt);
- ddmax := DragQueryFile(ddhandle, Word(-1), nil, 0);
- ddcount := 0;
- isdd := TRUE;
- MciNotify (Msg);
- end;
-
- PROCEDURE TWaveDeckDlg.DropNext;
- Var
- DroppedName: TFilename;
- DropPt : TPoint;
- Begin
- IF ddcount < ddmax then
- Begin
- DragQueryFile (ddhandle,ddcount,DroppedName,SizeOf(DroppedName));
- Inc (ddcount,1);
- SoundPlay (DroppedName);
- End
- Else
- Begin
- DragFinish (ddhandle);
- isdd := FALSE;
- End;
- End;
-
- { TWaveDeckDlg }
- constructor TWaveDeckDlg.Init(AParent: PWindowsObject; ATitle: PChar);
- begin
- {TDialog.Init(AParent, ATitle);}
- TDlgWindow.Init(AParent, ATitle);
- ActTrack := 0;
- if WaveOutGetNumDevs = 0 then
- begin
- BWCCMessageBox(HWindow, 'No WAV playback device available', 'Error',mb_OK or mb_IconStop);
- PostQuitMessage(0);
- end;
- PowerCheck := New(PCheckBox, InitResource(@self ,ID_Power));
- FirstOne := FALSE;
- LastOne := FALSE;
- RepeatOne := FALSE;
- PlayMode := SinglePlay;
- Rep := FALSE;
- virgin := TRUE;
- DeviceID :=0 ;
- isdd := FALSE;
- Playing := FALSE;
- EventsActive := GetProfileInt ('WSW_Captain_Hooks_Log','EventsActive',bf_Unchecked);
- IF EventsActive = bf_Unchecked THEN HookInstall(FALSE)
- ELse HookInstall(True);
- end;
-
- { Handle Repeat/Switch }
- procedure TWaveDeckDlg.HandleRepeat (Var Msg: TMEssage);
- Begin
- IF rep = FALSE Then
- Begin
- rep := TRUE;
- End
- Else
- Begin
- rep := FALSE;
- End;
- End;
-
- procedure TWaveDeckDlg.HandleSingle (Var Msg: TMessage);
- Begin
- HandleStop(Msg);
- CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Single);
- PlayMode := SinglePlay;
- HandleProgSwitch;
- End;
-
- procedure TWaveDeckDlg.HandleProg (Var Msg: TMessage);
- Begin
- HandleStop(Msg);
- CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Prog);
- PlayMode := PListPlay;
- HandleProgSwitch;
- End;
-
- procedure TWaveDeckDlg.HandleData (Var Msg: TMessage);
- Begin
- HandleStop(Msg);
- CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_DataBase);
- PlayMode := DataPlay;
- HandleProgSwitch;
- End;
-
- { Get information about WAV playback device }
- procedure TWaveDeckDlg.GetDeviceInfo;
- var
- WOutCaps: TWaveOutCaps;
- begin
- if WaveOutGetDevCaps(DeviceID, @WOutCaps, SizeOf(WOutCaps)) <> 0 then
- MessageBox(HWindow, 'GetDevCaps error', 'Error', mb_OK);
- end;
-
- procedure TWaveDeckDlg.HandleStop (var Msg:TMessage);
- Begin
- IF paused = TRUE Then SoundPause (Msg);
- LastOne := TRUE;
- mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
- DeviceID := 0;
- IsRunning := FALSE;
- Playing := FALSE;
- END;
-
- procedure TWaveDeckDlg.StopWave;
- begin
-
- if DeviceID <> 0 then
- begin
- mciSendCommand(DeviceID, mci_Stop, mci_Wait, Longint(@MciGenParm));
- mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
- IsRunning := FALSE;
- end;
- end;
-
- { Stop waveform output and close device }
-
- procedure TWaveDeckDlg.CloseSound;
- Var c: Integer;
- begin
- if DeviceID <> 0 then
- begin
- MciGenParm.dwCallback := 0;
- for c:= 0 to 40 do
- Begin
- mciSendCommand(DeviceID, mci_Stop, mci_Wait, Longint(@MciGenParm));
- End;
- mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
- IsRunning := FALSE;
- DeviceID := 0;
- end;
- end;
-
- { Receives MCI_Notify when MCI_Play is done }
-
- procedure TWaveDeckDlg.MciNotify(var Msg: TMessage);
- begin
- IF isdd = TRUE Then
- Begin
- StopWave;
- DropNext;
- End
- Else
- Begin
- IF Not LastOne then
- Begin
- StopWave;
- IF Not RepeatOne then HandleCue (Msg);
- Play;
- End
- Else
- Begin
- StopWave;
- IF (Playing = TRUE) AND (rep = TRUE) then
- Begin
- actTrack := 0;
- LastOne := FALSE;
- IsRunning := FALSE;
- HandlePlay (Msg);
- End
- Else
- Begin
- IsRunning := FALSE;
- RepeatOne := FALSE;
- DragAcceptFiles(HWindow, True);
- End
- End;
- RepeatOne := FALSE;
- End
- end;
-
- Procedure TWaveDeckDlg.HandleFirst (VAr Msg: TMessage);
- Begin
- ActTrack := 0;
- HandleRewind (Msg);
- End;
-
- Procedure TWaveDeckDlg.HandleLast (Var Msg: TMessage);
- Begin
- If PlayMode = PListPlay then ActTrack := WavePlayColl^.Count-1;
- IF (PlayMode = DataPlay) or (PlayMode=SinglePlay) then ActTrack := WaveCollect^.Count-1;
- HandleCue (Msg);
- End;
-
- { Stop output, or continue }
-
- procedure TWaveDeckDlg.SoundPause (Var Msg: Tmessage);
- begin
- if isrunning then
- Begin
- if not Paused then
- begin { Pause }
- MciGenParm.dwCallback := 0;
- mciSendCommand(DeviceID, mci_Pause, mci_Wait, Longint(@MciGenParm));
- end
- else
- begin { Continue }
- MciGenParm.dwCallback := 0;
- mciSendCommand(DeviceID, mci_Resume, mci_Wait, Longint(@MciGenParm));
- end;
- Paused := not Paused;
- end;
- end;
-
- { Play sound }
- procedure TWaveDeckDlg.SoundPlay(ElementName: PChar);
- var
- Res : Longint;
- ErrMsg : array [0..255] of Char;
- begin
- if (not IsRunning) then
- begin
-
- { MCI APIs to open device and play .WAV file, using notification to close }
- MciOpenParm.dwCallback := 0;
- MciOpenParm.wDeviceID := DeviceID;
- MciOpenParm.wReserved0 := 0;
- MciOpenParm.lpstrDeviceType := nil;
- MciOpenParm.lpstrElementName := ElementName;
- MciOpenParm.lpstrAlias := nil;
-
- if mciSendCommand(DeviceID, mci_Open, (mci_Wait or mci_Open_Element) ,
- Longint(@MciOpenParm)) <> 0 then
-
- else
- begin
-
- DeviceID := MciOpenParm.wDeviceID;
-
- { The time format in this demo is in samples }
- MciSetParm.dwCallback := 0;
- MciSetParm.dwTimeFormat := mci_Format_Samples;
- if mciSendCommand(DeviceID, mci_Set, mci_Set_Time_Format,
- Longint(@MciSetParm)) <> 0 then
- begin
- StopWave;
- MessageBox(HWindow, 'SetTime error', 'Wicked Sounds for Windows', mb_OK)
- end
- else
- begin
- MciPlayParm.dwCallback := HWindow;
- MciPlayParm.dwFrom := 0;
- MciPlayParm.dwTo := 0;
-
- Res := mciSendCommand(DeviceID, mci_Play, mci_Notify,
- Longint(@MciPlayParm));
- if Res <> 0 then
- begin
- mciGetErrorString(Res, ErrMsg, SizeOf(ErrMsg));
- MessageBox(HWindow, ErrMsg, 'Wicked Sounds for Windows', mb_OK or mb_IconStop);
- StopWave;
- end
- else
- begin
-
- IsRunning := True;
-
- end;
- end;
- end;
- end
- else
- begin
- StopWave;
- end;
- end;
-
- { Play }
-
- procedure TWaveDeckDlg.PlayStuff(ElementName: PChar);
- var
- Res : Longint;
- ErrMsg : array [0..255] of Char;
- xplay : TMCI_LOAD_PARMS;
- begin
- if (not IsRunning) then
- begin
- { MCI APIs open device and play .WAV file, using notification to close }
- xplay.dwCallback := HWindow;
- xplay.lpfilename := ElementName;
-
- if mciSendCommand(DeviceID, mci_Load, (mci_Wait or mci_Load_File),
- Longint(@xplay)) <> 0 then
- Begin
- MessageBox(HWindow, 'Sound could not be played back', 'Wicked Sounds for Windows', mb_OK);
- End
- else
- begin
- if 1=2 then
- begin
- StopWave;
- MessageBox(HWindow, 'SetTime error', 'Wicked Sounds for Windows', mb_OK)
- end
- else
- begin
- MciPlayParm.dwCallback := HWindow;
- MciPlayParm.dwFrom := 0;
- MciPlayParm.dwTo := 0;
-
- Res := mciSendCommand(DeviceID, mci_Play, mci_Notify,
- Longint(@MciPlayParm));
- if Res <> 0 then
- begin
- mciGetErrorString(Res, ErrMsg, SizeOf(ErrMsg));
- MessageBox(HWindow, ErrMsg, 'Wicked Sounds for Windows', mb_OK or mb_IconStop);
- StopWave;
- end
- else
- begin
-
- IsRunning := True;
-
- end;
- end;
- end;
- end
- else
- begin
- StopWave;
- end;
- end;
-
- procedure TWaveDeckDlg.SetupWindow;
- Var MSg: TMessage;
- begin
- TDialog.SetupWindow;
- DragAcceptFiles(HWindow, True);
- StrCopy(WDummyRec.FileName,' - - - - ');
- StrCopy(WDummyRec.FileComment,' Play single files');
- DisPlayData(WDummyRec);
- CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Single);
- PowerCheck^.SetCheck(1);
- AppIcon := LoadIcon(Hinstance, 'LogoIcon2');
- end;
-
- { Return window class name. This name corresponds to the class name
- specified for the Convert dialog in the resource file. }
-
- function TWaveDeckDlg.GetClassName: PChar;
- begin
- GetClassName := 'TWaveDeckDlg';
- end;
-
- PROCEDURE TWaveDeckDlg.GetWindowClass (VAR AWndClass : TWndClass);
- Var Msg: TMessage;
- BEGIN
- TDlgWindow.GetWindowClass(AWndClass);
- END;
-
- procedure TWaveDeckDlg.WMQueryDragIcon(var Msg: TMessage);
- begin
- Msg.Result := AppIcon;
- end;
-
- PROCEDURE TWaveDeckDlg.HandlePlay (Var MSg:TMessage);
- Begin
- IF Paused=TRUE then
- Begin
- SoundPause (Msg);
- End
- Else
- Begin
- IF isrunning = FALSE THen
- Begin
- DragAcceptFiles(HWindow, False);
- Dec(ActTrack,1);
- LastOne := FALSE;
- FirstOne := FALSE;
- RepeatOne := FALSE;
- MciNotify(Msg);
- Playing := TRUE;
- End;
- End;
- End;
-
- PROCEDURE TWaveDeckDlg.HandleAbout(VAR Msg : TMessage);
- VAR
- LDialog : PAboutDlg;
- BEGIN
- LDialog := New(PAboutDlg, Init(@self, DN_AboutDlg));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN END;
- END;
-
- PROCEDURE TWaveDeckDlg.HandleEvents(VAR Msg : TMessage);
- VAR
- LDialog : PEventDlg;
- BEGIN
- LDialog := New(PEventDlg, Init(@self, DN_EventDlg));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN END;
- END;
-
- PROCEDURE TWaveDeckDlg.HandleScrnSve(VAR Msg : TMessage);
- VAR
- LDialog : PScreenDlg;
- BEGIN
- LDialog := New(PScreenDlg, Init(@self, DN_ScreenDlg));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN END;
- END;
-
- { ---- Play on status SINGLEPLAY, PLISTPLAY DATABASEPLAY! ---- }
- PROCEDURE TWaveDeckDlg.Play;
- VAR
- LDialog : PPlayDialog;
- Puffer : ARRAY[0..12] OF CHAR;
- Chicken : WaveDataType;
- TPDummy : Array[0..137] OF CHAR;
-
- procedure PlaySub(TempNr : Integer);
- VAR
- TDummy : Array[0..255] OF Char;
- MDummy : Array[0..80] OF Char;
- DDummy : Array[0..2] OF Char;
- Sub1,Sub2,Typ,Message : Integer;
-
- DDialog : PDiskDlg;
- TestDlg : Integer;
-
- BEGIN
- Message := idOK;
- IF PlayMode = DataPlay then
- Begin
- PWaveData(WaveCollect^.At(TempNr))^.GetData(WaveDummy);
- End;
- IF PlayMode = PListPlay then
- Begin
- PWaveData(WavePlayColl^.At(TempNr))^.GetData(WaveDummy);
- End;
-
- {--------------------------------------------------------------------}
- {----------------------- Play dialog --------------------------------}
-
- DPlayObj := New(PDiskPlay,Init(@self));
- DPlayObj^.DiskPlayDlg(WaveDummy, Message);
- DPlayObj^.Done;
-
- DiskDummy[0] := WaveDummy.DiskDrive;
- DiskDummy[1] := #0;
- StrCat(DiskDummy, ':');
- StrCat(DiskDummy,WaveDummy.PathName);
- StrCat(DiskDummy,WaveDummy.FileName);
-
- IF (Message = idOK) THEN BEGIN
-
- SoundPlay(DiskDummy);
- END;
- END;
-
- BEGIN
-
- IF PlayMode = SinglePlay Then
- Begin
- StrCopy(TPDummy, RootDir);
- StrCat(TPDummy, '*.WAV');
- LDialog := New(PPlayDialog, Init(@self, dn_PlayDlg,TPDummy));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN END;
- END
- Else
- Begin
- IF PlayMode = PListPlay Then
- Begin
- IF WavePlayColl^.Count >0 THEN PlaySub(ActTrack);
- End;
- End;
- IF PlayMode = DataPlay Then
- Begin
- If WaveCollect^.Count > 0 Then PlaySub (ActTrack);
- End;
- End;
-
- PROCEDURE TWaveDeckDlg.HandleCue (Var Msg:TMessage);
- Begin
- IF Not Paused THen
- Begin
- lastOne := FALSE;
- RepeatOne := TRUE;
-
- If PlayMode = PListPlay Then
- Begin
- IF WavePlayColl^.Count > 0 then
- Begin
- Inc(ActTrack,1);
- IF ActTrack >= (WavePlayColl^.Count)-1 then
- Begin
- LastOne := TRUE;
- ActTrack := WavePlayColl^.Count - 1;
- End;
- PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End
- End
- Else
- IF PlayMode = DataPlay THEN
- Begin
- IF WaveCollect^.Count > 0 then
- Begin
- Inc(ActTrack,1);
- IF ActTrack >= (WaveCollect^.Count)-1 then
- Begin
- LastOne := TRUE;
- ActTrack := (WaveCollect^.Count)-1;
- End;
- PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End
- End;
- StopWave;
- End;
- END;
-
- PROCEDURE TWaveDeckDlg.HandleRewind (Var Msg: TMessage);
- Begin
- IF Not Paused then
- Begin
- FirstOne := FALSE;
- LastOne := FALSE;
- RepeatOne := TRUE;
- IF PlayMode = PListPlay Then
- Begin
- IF WavePlayColl^.Count > 0 then
- Begin
- Dec(ActTrack,1);
- IF ActTrack < 0 then
- Begin
- ActTrack:=0;
- FirstOne := TRUE;
- End;
- PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End
- End
- Else
- IF PlayMode = DataPlay THEN
- Begin
- IF WaveCollect^.Count > 0 then
- Begin
- Dec(ActTrack,1);
- IF ActTrack < 0 then
- Begin
- ActTrack:=0;
- FirstOne := TRUE;
- End;
- PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End;
- END;
- StopWave;
- End;
- End;
-
- PROCEDURE TWaveDeckDlg.HandleProgSwitch;
- Begin
- ActTrack := 0;
- IF PlayMode = DataPlay then
- Begin
- IF WaveCollect^.Count > 0 then
- Begin
- PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End;
- End
- Else
- IF PlayMode = SinglePlay THEN BEGIN
- StrCopy(WDummyRec.FileName,' - - - - ');
- StrCopy(WDummyRec.FileComment,' Play single files');
- DisPlayData(WDummyRec);
- END
- ELSE
- Begin
- IF WavePlayColl^.Count > 0 then
- Begin
- PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- End
- ELSE BEGIN
- StrCopy(WDummyRec.FileName,' - - - - ');
- StrCopy(WDummyRec.FileComment,' The playlist is empty.');
- DisPlayData(WDummyRec);
- END;
- End;
-
- End;
-
-
-
- PROCEDURE TWaveDeckDlg.HandlePower (Var Msg: TMessage);
- Var
- MDummy : Array[0..100] of Char;
- Message : Integer;
- MDialog : PSaveDlg;
- Begin
- CloseSound;
- IF DBChanged THEN BEGIN
- StrCopy(MDummy, 'Changes made to database since last save.');
- StrCat(MDummy,' Save changes now?');
- Message := BWCCMessageBox(HWindow,MDummy, 'Wicked Sounds for Windows: Note', MB_OkCancel+mb_IconHand);
- IF Message = idOK THEN BEGIN
- MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,1));
- IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
- END;
- DBChanged := FALSE;
- END;
- END;
- TWaveDeckDlg.Done;
- End;
-
- (* Display Data *)
-
- PROCEDURE TWaveDeckDlg.DisplayData (Data : WaveDataType);
- Var Out : Array[0..5] of char;
- Begin
- Str((ActTrack+1):5,Out);
- SetDlgItemText(HWindow, id_track,Out);
- SetDlgItemText(HWindow, id_Name,Data.Filename);
- SetDlgItemText(HWindow, id_Mess,Data.FileComment);
- End;
-
- PROCEDURE TWaveDeckDlg.HandleRecord(VAR Msg : TMessage);
- VAR
- LDialog : PScanDlg;
- TkDialog : PTakeDlg;
- Puffer : ARRAY[0..12] OF CHAR;
- BEGIN
- END;
-
- PROCEDURE TWaveDeckDlg.HandleSearch(VAR Msg : TMessage);
- VAR
- LDialog : PPPlayDlg;
- Puffer : ARRAY[0..12] OF CHAR;
- BEGIN
- LDialog := New(PPPlayDlg, Init(@self, DN_PPlayDlg, WaveCollect));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN
- IF WavePlayColl^.Count >0 THEN BEGIN
- IF PlayMode = PListPlay THEN BEGIN
- ActTrack := 0;
- PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
- DisplayData (WDummyRec);
- END;
- end;
- END;
- END;
-
- PROCEDURE TWaveDeckDlg.HandleBrowse(VAR Msg : TMessage);
- VAR
- LDialog : PBrwsDlg;
- Puffer : ARRAY[0..12] OF CHAR;
- BEGIN
- BEGIN
- LDialog := New(PBrwsDlg, Init(@self, DN_BrwsDlg, WaveCollect));
- IF Application^.ExecDialog(LDialog) = ID_Ok THEN
- BEGIN END;
- END;
- END;
-
- { TWaveDeckApp }
- procedure TWaveDeckApp.InitMainWindow;
- begin
- MainWindow := New(PWaveDeckDlg, Init(NIL, DN_DeckDlg));
- end;
-
- Destructor TWaveDeckApp.Done;
- VAR
- f : File;
- BEGIN
- TApplication.Done;
- END;
-
- var
- WaveDeckApp: TWaveDeckApp;
-
- begin
- WaveDeckApp.Init('WaveDeck');
- WaveDeckApp.Run;
- WaveDeckApp.Done;
- end.
-